package app.v1.common.service;

import app.v1.common.domain.ao.dict.DictCreateAo;
import app.v1.common.domain.ao.dict.DictListAo;
import app.v1.common.domain.ao.dict.DictUpdateAo;
import app.v1.common.domain.pojo.Dict;
import app.v1.common.domain.vo.dict.DictListVo;
import com.gitee.feizns.quickstart.domain.web.PageAo;
import com.gitee.feizns.quickstart.domain.web.PageRecordsVo;

import java.util.List;

/**
 * 字典服务
 * @author feizns
 * @since 2023/06/10
 */
public interface DictService {

    /**
     * 分页参数
     * @param page 分页参数
     * @param ao 请求参数
     * @return {@link PageRecordsVo}<{@link Dict}>
     */
    PageRecordsVo<DictListVo> page(PageAo page, DictListAo ao);

    /**
     * 得到通过编号
     * @param id 编号
     * @return {@link Dict}
     */
    Dict getById(Long id);

    /**
     * 更新通过编号
     * @param id 编号
     * @param ao 请求参数
     * @return {@link Dict}
     */
    Dict updateById(Long id, DictUpdateAo ao);

    /**
     * 删除通过编号
     * @param id 编号
     * @return {@link Dict}
     */
    Dict deleteById(Long id);

    /**
     * 获取字典值
     * @param key 关键
     * @return {@link Dict}
     */
    Object get(String key);

    /**
     * 修改字典值
     * @param key 关键
     * @param value 价值
     * @return {@link Object}
     */
    Object put(String key, String value);

    /**
     * 创建
     * @param ao 请求参数
     * @return {@link Dict}
     */
    Dict create(DictCreateAo ao);

    /**
     * 通过类型
     * @param type 类型
     * @return {@link Dict}
     */
    List<Dict> getByType(String type);

    /**
     * dict类型列表
     * @param ao 请求参数
     * @return {@link List}<{@link Dict}>
     */
    List<Dict> listOfDict(PageAo page, DictListAo ao);

}
